/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package stories;

import cucumber.api.java.en.And;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import java.sql.ResultSet;
import static org.junit.Assert.*;
import org.junit.Test;
import ventasautomotrices.AdminConexion;
import ventasautomotrices.Interfaz;

/**
 *
 * @author granyatee
 */
public class LoginStepDef {
    Interfaz in = new Interfaz();
    String idRegistroLogin;

    @Test(timeout=300)
    @When("^el empleado ingresa su id y contrasena para iniciar sesion$")
    public void el_empleado_ingresa_su_id_y_contrasena_para_iniciar_sesion() throws Throwable {
        AdminConexion ac = new AdminConexion();
        ac.abrirConexionBDD();
        ResultSet rs = ac.consulta("SELECT MAX(idRegistroLogin) FROM AutoVentas.RegistroLogin");
        idRegistroLogin = null;
        while(rs.next()){
            idRegistroLogin = rs.getString(1);
        }
        ac.cerrarConexionBDD();
        if(idRegistroLogin==null){
            idRegistroLogin="0";
        }
        in.settxts("1", "neto");
        in.login();
    }

    @Test(timeout=1000)
    @Then("^el sistema debe registrar en la BDD el id del empleado y la fecha en que hizo login$")
    public void el_sistema_debe_registrar_en_la_BDD_el_id_del_empleado_y_la_fecha_en_que_hizo_login() throws Throwable {
        AdminConexion ac = new AdminConexion();
        ac.abrirConexionBDD();
        ResultSet rs = ac.consulta("SELECT MAX(idRegistroLogin) FROM AutoVentas.RegistroLogin");
        String idRegistroLoginNuevo = null;
        if(rs.next()){
            idRegistroLoginNuevo = rs.getString(1);
        }
        ac.cerrarConexionBDD();
        if(idRegistroLoginNuevo==null){
            idRegistroLoginNuevo="0";
        }
        assertEquals(Integer.parseInt(idRegistroLogin)+1, Integer.parseInt(idRegistroLoginNuevo));
    }
    
    
    @And("^el sistema debe mostrar un mensaje de confirmacion de inicio de sesion$")
    public void el_sistema_debe_mostrar_un_mensaje_de_confimacion_de_inicio_de_sesion() throws Throwable {
        assertTrue(in.getDlgMensajes().isVisible());
        assertEquals(in.getTxtMensaje().getText(), "Ha iniciado sesion correctamente.");
    }

    @Test(timeout=100)
    @And("^el sistema debe mostrar los menus de las funciones que puede utilizar el empleado$")
    public void el_sistema_debe_mostrar_los_menus_de_las_funciones_que_puede_utilizar_el_empleado() throws Throwable {
        /*AdminConexion ac = new AdminConexion();
        Connection conn = ac.abrirConexionBDD();
        
        String query="DELETE FROM AutoVentas.Empleado WHERE idVendedor=2";
        PreparedStatement ps = conn.prepareStatement(query);
        int ret = ac.insert(ps);
        ac.cerrarConexionBDD();
        */
        
        //System.out.println("-------------------dossssssssssssssssssssssssssssssssssssssssss");
        assertEquals(in.getMnuArchivo().isVisible(), true);
        assertEquals(in.getMnuAutos().isVisible(), true);
        assertEquals(in.getMnuCerrarSesion().isVisible(), true);
        assertEquals(in.getMnuEmpleados().isVisible(), true);
        
        assertEquals(in.getMnuReportes().isVisible(), true);
        assertEquals(in.getMnuVentas().isVisible(), true);
        assertEquals(in.getPnlLogin().isVisible(), false);
    }

    @Test(timeout=100)
    @And("^se debe guardar un objeto empleado en la clase Interfaz$")
    public void se_debe_guardar_un_objeto_empleado_en_la_clase_Interfaz() throws Throwable {
        assertNotNull(in.getEmp());
        assertEquals(1, in.getEmp().getIdEmpleado());
    }
            
    @Test(timeout=300)
    @When("^el empleado ingresa un id incorrecto$")
    public void el_empleado_ingresa_un_id_incorrecto() throws Throwable {
        in.settxts("2", "neto");
        in.login();
    }

    
    @Then("^el sistema muestra un mensaje de error de login$")
    public void el_sistema_muestra_un_mensaje_de_error_de_login() throws Throwable {
        assertTrue(in.getDlgMensajes().isVisible());
        assertEquals(in.getTxtMensaje().getText(), "Datos incorrectos.");
    }
    
}
